package com.jabm.cmaq.negocio.impl;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import com.jabm.cmaq.dao.CMaqMaquinasDAO;
import com.jabm.cmaq.modelo.CMaqHerramientas;
import com.jabm.cmaq.modelo.CMaqMaquinas;
import com.jabm.cmaq.modelo.CMaqUsuarios;
import com.jabm.cmaq.negocio.interfaces.ICMaqMaquinasManager;

/**
 *  Capa de gestion para la entidad de CMaqMaquinas.
 *  Copyright: Copyright (c) 2014
 *  Company:
 *  @author jabastias
 *  @version 1.0
 */
public class CMaqMaquinasManagerImpl implements ICMaqMaquinasManager{
	
    /**
     * DAO para la realizacion de las operciones CRUD sobre CMaqMaquinas.java
     */
	private CMaqMaquinasDAO iMaquinaDAO;

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqMaquinasManager#insertarMaquina(com.jabm.cmaq.modelo.CMaqMaquinas)
	 */
	public void insertarMaquina(CMaqMaquinas maquina) {
		iMaquinaDAO.insertar(maquina);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqMaquinasManager#modificarMaquina(com.jabm.cmaq.modelo.CMaqMaquinas)
	 */
	public void modificarMaquina(CMaqMaquinas maquina) {
		iMaquinaDAO.modificar(maquina);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqMaquinasManager#borrarMaquina(com.jabm.cmaq.modelo.CMaqMaquinas)
	 */
	public void borrarMaquina(CMaqMaquinas maquina) {
		iMaquinaDAO.borrar(maquina);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqMaquinasManager#buscarMaquina(int)
	 */
	public CMaqMaquinas buscarMaquina(int id) {
		return iMaquinaDAO.buscar(id);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqMaquinasManager#listarTodosMaquinas()
	 */
	public List<CMaqMaquinas> listarTodosMaquinas() {
		return iMaquinaDAO.listarTodos();
	}

	/**
	 * @return the iMaquinaDAO
	 */
	public CMaqMaquinasDAO getiMaquinaDAO() {
		return iMaquinaDAO;
	}

	/**
	 * @param iMaquinaDAO the iMaquinaDAO to set
	 */
	public void setiMaquinaDAO(CMaqMaquinasDAO iMaquinaDAO) {
		this.iMaquinaDAO = iMaquinaDAO;
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqMaquinasManager#filtrarMaquinas(com.jabm.cmaq.modelo.CMaqMaquinas)
	 */
	@Override
	public List<CMaqMaquinas> filtrarMaquinas(CMaqMaquinas maquina) {
		 //Se genera la sql
		String sql = "from " + CMaqMaquinas.class.getName() + " maq where 1=1";
						
		if(maquina.getSerie()!= null 
				&& !maquina.getSerie().equals("")){
			sql = sql + " and maq.serie= '"+maquina.getSerie()+"'";
		}
		
		if(maquina.getPatrimonio()!= null 
				&& !maquina.getPatrimonio().equals("")){
			sql = sql + " and maq.patrimonio= '"+maquina.getPatrimonio()+"'";
		}
		
		if(maquina.getNombre()!= null 
				&& !maquina.getNombre().equals("")){
			sql = sql + " and maq.nombre= '"+maquina.getNombre()+"'";
		}
		
		if(maquina.getModelo()!= null 
				&& !maquina.getModelo().equals("")){
			sql = sql + " and maq.modelo = '"+maquina.getModelo()+"'";

		}
		
		if(maquina.getMarca()!= null 
				&& !maquina.getMarca().equals("")){
			sql = sql + " and maq.marca = '"+maquina.getMarca()+"'";

		}	
				
		if(maquina.getValorUnidad() != null) {
			sql = sql + " and maq.valorUnidad = '"+maquina.getValorUnidad()+"'";
		}						
								
		if(maquina.getLocalizacion()!= null 
				&& !maquina.getLocalizacion().equals("")){
			sql = sql + " and maq.localizacion = '"+maquina.getLocalizacion()+"'";

		}						
		
		if(maquina.getEstado() != null 
				&& !maquina.getEstado().equals("")){
			sql = sql + " and maq.estado = '"+maquina.getEstado()+"'";
		}
				
		if(maquina.getCodigo() != null 
				&& !maquina.getCodigo().equals("")){
			sql = sql + " and maq.codigo = '"+maquina.getCodigo()+"'";
		}
		
		if(maquina.getcMaqFrenteTrabajo() != null && !"".equals(maquina.getcMaqFrenteTrabajo().getNombre())){
			sql = sql + " and maq.cMaqFrenteTrabajo.nombre= '"+maquina.getcMaqFrenteTrabajo().getNombre()+"'";
		}
		
		if(maquina.getcMaqUsuario() != null && 
				maquina.getcMaqUsuario().getNameEmployee() != null
				&& !"".equals(maquina.getcMaqUsuario().getNameEmployee())){
			sql = sql + " and maq.cMaqUsuario.nameEmployee = '"+maquina.getcMaqUsuario().getNameEmployee()+"'";
		}
		
		
		if(maquina.getFechaDesde() != null){
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");			
			sql = sql + " and maq.fecha >= '"+sdf.format(maquina.getFechaDesde())+"'";

		}
		
		if(maquina.getFechaHasta() != null){
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			sql = sql + " and maq.fecha <= '"+sdf.format(maquina.getFechaHasta())+"'";

		}
		
		
		return iMaquinaDAO.filtrar(sql);
	}

	/* (non-Javadoc)
	 * @see com.jabm.cmaq.negocio.interfaces.ICMaqMaquinasManager#updateEstadoMaquina(java.lang.String, java.lang.String)
	 */
	@Override
	public boolean updateEstadoMaquina(String codigo, String estado, Date fecha,  CMaqUsuarios usuario) {
		return iMaquinaDAO.updateEstadoMaquina(codigo, estado, fecha, usuario.getIdUsuario());
	}
}
